我正在 WPF C# 中制作一個生成分形的應用程式。我正在使用某人創建 OpenCL 內核并在 C# 中運行它的代碼: https ://www.codeproject.com/Articles/1116907/How-to-Use-Your-GPU-in-NET (似乎使用另一個名為 Cloo 的庫來實際制作 OpenCL 的東西)。
在內核中,我需要能夠使用復數來生成分形。我環顧四周,有一個默認的 c 庫,您可以通過將行#include <complex.h>放在包含我需要的所有函式的字串頂部來包含。(我需要的不僅僅是我可以自己編碼的基本加法和乘法,例如指數和三角函式,我真的不想手工制作)。
但是,當我寫這一行時,它無法編譯,因為找不到“complex.h”。所以我需要一些方法將內核直接指向這個檔案。另一個解決方法可能是將整個庫推入內核,這對我來說很好,但我不知道我需要找到和復制什么來完成這項作業,因為我對 c 和頭檔案等知之甚少。
幫助將不勝感激。
uj5u.com熱心網友回復:
您不能在 OpenCL C 中包含 C 庫。但 OpenCL C 本質上只是 C99,因此您可以將自己的complex型別設為struct:
typedef struct __attribute__((packed)) struct_complex {
float real;
float imaginary;
} complex;
complex add(const complex x, const complex y) {
complex result;
result.real = x.real y.real;
result.imaginary = x.imaginary y.imaginary;
return result;
}
...
鑒于庫只是代碼,請查看檔案complex.h并復制/調整您需要的內容。OpenCL C 已經為 foating-point 提供了所有數學函式,請參見此處。具有復數的三角函式/指數很簡單:使用歐拉公式 將復數拆分為實部和虛部,exp(i*x) == cos(x) i*sin(x)并應用三角恒等式。這也可能會有所幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/488064.html
