Tôi đang sử dụng một ứng dụng hiện có để sinh ra một loạt các pthread (linux), và mỗi ứng dụng tạo ra bối cảnh CUDA riêng của nó. (sử dụng cuda 3.2 ngay bây giờ).Luồng và ngữ cảnh của CUDA
Sự cố tôi gặp phải là dường như mỗi luồng có ngữ cảnh riêng của nó tốn rất nhiều bộ nhớ trên GPU. Một cái gì đó giống như 200MB cho mỗi chủ đề, vì vậy điều này thực sự hạn chế tôi.
Tôi có thể đơn giản tạo luồng trong chuỗi chủ, chuyển tham chiếu luồng tới chuỗi công việc, sau đó có thể chuyển tới thư viện CUDA số luồng của chúng và tất cả hoạt động trong cùng ngữ cảnh không?
Chủ đề của nhân viên có tự động biết cùng ngữ cảnh CUDA vì đó là chủ đề gốc không?
Cảm ơn
hiện PopCurrent() có thực sự xóa nó khỏi "hàng đợi" chứa ngữ cảnh để không truy cập được vào các chủ đề khác không? Tôi có thể bật ngữ cảnh hiện tại từ chuỗi máy chủ và chỉ chuyển ngữ cảnh đó đến chuỗi công việc và "đẩy" nó vào ngăn xếp ngữ cảnh không? Âm thanh như bối cảnh sẽ phải ở trong một "hàng đợi đồng thời" và có một mutex, phải không? – Derek
Khi một ngữ cảnh được tạo, nó được đẩy lên một ngăn xếp ngữ cảnh hiện tại. Popping bối cảnh làm cho nó trở thành không có sẵn cho bất kỳ chủ đề CPU cho đến khi nó đã được đẩy lên một ngăn xếp ngữ cảnh hiện tại với cuCtxPushCurrent(). Vì vậy, quy trình làm việc bạn mô tả chính xác là những gì API được thiết kế để bật. Các ngữ cảnh là an toàn chỉ, vì vậy chỉ đồng bộ hóa chủ đề bổ sung mà bạn cần thực hiện sẽ là thực thi một thứ tự hoặc ngữ nghĩa khác khi ứng dụng của bạn cần. – ArchaeaSoftware
Tôi đang sử dụng 'cuCtxSetCurrent (CUcontext ctx)' cho mỗi chuỗi. Điều này cần một cái gì đó để cho nó đi, tương tự như pop sau khi đẩy, khi thread không cần bối cảnh nữa? –