Tôi mới tham gia C, C++ và OpenCL và cố hết sức để tìm hiểu họ vào lúc này. Đây là một hàm C++ có từ trước mà tôi đang cố gắng tìm ra cách chuyển sang OpenCL bằng cách sử dụng các ràng buộc C hoặc C++.Làm thế nào để vượt qua và truy cập C++ vectơ để OpenCL hạt nhân?
#include <vector>
using namespace std;
class Test {
private:
double a;
vector<double> b;
vector<long> c;
vector<vector<double> > d;
public:
double foo(long x, double y) {
// mathematical operations
// using x, y, a, b, c, d
// and also b.size()
// to calculate return value
return 0.0;
}
};
Câu hỏi chung của tôi là cách chuyển tất cả các thành viên lớp mà hàm này truy cập vào liên kết và hạt nhân. Tôi hiểu làm thế nào để vượt qua trong các giá trị vô hướng nhưng các giá trị vector tôi không chắc chắn về. Có lẽ có một cách để vượt qua trong con trỏ đến mỗi thành viên trên hoặc bộ nhớ bản đồ chúng để xem OpenCL của họ là đồng bộ với bộ nhớ máy chủ? Chia nhỏ câu hỏi của tôi như sau.
- Làm cách nào để chuyển thành viên b và c vào phần ràng buộc và hạt nhân được cho rằng chúng có kích thước khác nhau?
- Làm cách nào để vượt qua thành viên d cho rằng đó là hai chiều?
- Làm cách nào để truy cập các thành viên này từ bên trong hạt nhân và chúng sẽ được khai báo như thế nào trong các đối số cho hạt nhân? Chỉ đơn giản là sử dụng ký hiệu chỉ mục mảng tức là b [0] làm việc để truy cập?
- Làm cách nào để gọi một phép toán tương đương với b.size() trong hàm hạt nhân hoặc tôi sẽ không thay vì chuyển kích thước từ ràng buộc vào hạt nhân dưới dạng đối số thừa không? Điều gì xảy ra nếu nó thay đổi?
Tôi thực sự sẽ đánh giá cao mã nguồn ví dụ về mã ràng buộc và mã nguồn của C hoặc C++ trong câu trả lời.
Rất cám ơn.
'using namespace std;' - Đừng làm điều đó trong tiêu đề, bao giờ hết. –
@EdS. tại sao lại như vậy? – dominicbri7
@ dominicbri7: Vì bạn đang gây ô nhiễm không gian tên chung cho tất cả những người bao gồm tiêu đề của bạn. Có lẽ tôi không muốn 'std' được nhập vào không gian tên chung của tôi. Có lẽ có lý do chính đáng cho điều đó. Bạn không và đã lựa chọn cho tôi. –