Portál AbcLinuxu, 9. května 2025 23:45

Dotaz: gcc a vektorová aritmetika

21.2.2009 09:39 vencas | skóre: 32
gcc a vektorová aritmetika
Přečteno: 301×
Odpovědět | Admin

Zdravím, hraju si s __attribute__((vector_size(...))) a operacemi nad vektory, ale nedokážu přijít na to, jak se podívat na výsledek. Zde je kód:

#include<iostream>
typedef double v3sd __attribute__((vector_size(sizeof(double)*4)));
v3sd main(void){
	v3sd a={2.,2.,2.,2.}, b={5.,5.,5.,5.};
	v3sd c=a+b;
	std::cout<<c[0]<<std::endl
}

Ale překladač mi na poslední řádce napíše error: invalid types ‘double __vector__[int]’ for array subscript. Jak se tedy mám dostat k jednotlivým číslům v tom výsledném vektoru? Zkoušel jsem to přetypovat na double* apod., ale bez úspěchu. Na googlu jsem nic nenašel, jen tohle, kde definuje union{ double v __attribute__((vector_size(sizeof(double)*4)); double d[4]; },, ale tam mi zase nefunguje inicializace.

Dokáže mi s tím někdo poradit? Dík.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.2.2009 11:39 crusoe
Rozbalit Rozbalit vše Re: gcc a vektorová aritmetika
Odpovědět | | Sbalit | Link | Blokovat | Admin

 Cau ,

pozri toto  http://ds9a.nl/gcc-simd/  ,

Chcel som sem vhodit nejaky ukazkovy kod ale , nejako to odmieta vlozit kod v C , a vypisuje hluposti .

Tak daj mail a poslem ti ukazkovy program 

 

21.2.2009 12:48 vencas | skóre: 32
Rozbalit Rozbalit vše Re: gcc a vektorová aritmetika

Ahoj, dík za link, dej ten svůj program na pastebin.com a dám ho sem, aby z toho měli taky ostatní něco. Zkoušel jsem to ještě bez těch hezkých inicializátorů, to se zkompiluje:

#include<stdio.h>
typedef union{
	double v __attribute__((vector_size(sizeof(double)*4)));
	double d[4];
} v3sd;
int main(void){
	v3sd a,b; 
	a.d[0]=.2; a.d[1]=.2; a.d[2]=.2; a.d[3]=.2;
	b.d[0]=.5; b.d[1]=.5; b.d[5]=.5; b.d[3]=.5;
	v3sd c; c.v=a.v+b.v;
	printf("%f %f %f %f\n",c.d[0],c.d[1],c.d[2],c.d[3]);
}

A výsledek

0.700000 1.000000 0.200000 0.700000

Takže úplně ono to není... :-(

21.2.2009 14:10 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: gcc a vektorová aritmetika
Ak sa opraví b.d[5]=.5 tak to bude fungovať správne. :)
21.2.2009 14:30 vencas | skóre: 32
Rozbalit Rozbalit vše Re: gcc a vektorová aritmetika

Aha :-| Udělal jsem na té druhé řádce s/a/b/g a s/2/5/g a vedlejší účinek jsem přhlédl. Vážně to funguje. Díky!

22.2.2009 08:31 Ash | skóre: 53
Rozbalit Rozbalit vše Re: gcc a vektorová aritmetika
na záměnu krátkých řetězců (jeden znak...) určitě s/a/b/gc, lidé vnímají slova, písmena přehlédnou snadno.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.