पिछले कुछ वर्षों में, मैं और समय मैं (जैसे SSE प्रोग्रामिंग के लिए लोगों के रूप में) संकलक आंतरिक कार्यों पर भरोसा किया गया है का सबसे या प्रोग्रामिंग विधानसभा पर SIMD प्रोग्रामिंग का एक बहुत कर रहा हूँ वास्तव में निफ्टी सामान पाने के लिए। हालांकि, अब तक मैं शायद ही कभी सिमड के लिए अंतर्निहित समर्थन के साथ किसी प्रोग्रामिंग भाषा को खोजने में सक्षम हूं।SIMD प्रोग्रामिंग भाषाओं
अब स्पष्ट रूप से एचएलएसएल, सीजी और जीएलएसएल जैसी शेडर भाषाएं हैं जिनके पास इस तरह की चीजों के लिए मूल समर्थन है, हालांकि, मैं ऐसा कुछ ढूंढ रहा हूं जो कम से कम एसएसई को ऑटोवॉक्टरिज़ेशन के बिना संकलित करने में सक्षम है लेकिन अंतर्निर्मित वेक्टर परिचालन के लिए समर्थन। क्या ऐसी भाषा मौजूद है?
यह (का हिस्सा) एक छग शेडर है कि एक चर्चा करता है का एक उदाहरण है और वाक्य रचना के संदर्भ में यह शायद मैं के लिए क्या देख रहा हूँ के सबसे करीब है।
float4 pixelfunction(
output_vs IN,
uniform sampler2D texture : TEX0,
uniform sampler2D normals : TEX1,
uniform float3 light,
uniform float3 eye) : COLOR
{
float4 color = tex2D(texture, IN.uv);
float4 normal = tex2D(normals, IN.uv) * 2 - 1;
float3 T = normalize(IN.T);
float3 B = normalize(IN.B);
float3 N =
normal.b * normalize(IN.normal) +
normal.r * T +
normal.g * B;
float3 V = normalize(eye - IN.pos.xyz);
float3 L = normalize(light - IN.pos);
float3 H = normalize(L + V);
float4 diffuse = color * saturate(dot(N, L));
float4 specular = color * pow(saturate(dot(N, H)), 15);
float falloff = dot(L, normalize(light));
return pow(falloff, 5) * (diffuse + specular);
}
सामग्री इस भाषा में कोई वास्तविक चाहिए होगा कि है:
- धूर्तता ऑपरेटरों में निर्मित
- वेक्टर आपरेशन (डॉट, पार, सामान्य, परिपूर्ण, प्रतिबिंबित वगैरह)
- कस्टम डेटा प्रकारों (structs) के लिए समर्थन
- डायनामिक ब्रांचिंग अच्छा होगा (लूप के लिए, यदि बयान)
उन फोरट्रान कार्यान्वयन अभी भी उसी तरह सबसे सी ++ compilers इस समर्थन में स्वत: vectorization का उपयोग करें। मेरे साथ समस्या यह है कि यह अनुमान लगाने में बहुत मुश्किल है कि कौन सा कोड वेक्टरकृत किया जाएगा और कौन सा कोड नहीं होगा। अब मुझे फोरट्रान कंपाइलर्स में इसकी स्थिति पता नहीं है क्योंकि मेरी पृष्ठभूमि सी ++ में है, इसलिए मुझे लगता है कि मैं एक उच्च स्तरीय शेडर जैसी दृष्टिकोण पसंद करूंगा जो मुझे अंतिम आउटपुट पर अधिक नियंत्रण प्रदान करे। –